Telegram Group & Telegram Channel
🐍 Хитрая задача на замыкания в Python

🔹 Уровень: Advanced
🔹 Темы: замыкания (closures), переменные цикла, lambda, отложенное выполнение

📌 Условие

Что выведет следующий код?


funcs = []

for i in range(5):
funcs.append(lambda: i)

results = [f() for f in funcs]
print(results)


Вопросы

1. Почему вывод может не соответствовать ожиданиям [0, 1, 2, 3, 4]?
2. Что именно "запоминает" lambda внутри цикла?
3. Как переписать код, чтобы результат был [0, 1, 2, 3, 4]?

🔍 Разбор

Ожидаемый (неправильный) вывод:

[4, 4, 4, 4, 4]


🔧 Почему так происходит

- Все lambda внутри funcs замыкают одну и ту же переменную `i`.
- К моменту выполнения f() переменная i уже равна 4 — и так для всех функций.

⚠️ Подвох

lambda: i не захватывает значение, а ссылается на переменную, которая будет изменяться при каждой итерации цикла.
В итоге — все lambda ссылаются на одно и то же `i`, которое стало равно 4 к концу цикла.

🧠 Решение

Нужно "зафиксировать" значение i, передав его как аргумент по умолчанию в lambda:


for i in range(5):
funcs.append(lambda i=i: i)


Теперь результат будет:

[0, 1, 2, 3, 4]


📌 Это один из самых частых подвохов в Python, особенно при использовании лямбда-функций в генераторах и UI-коллбеках.



tg-me.com/python_job_interview/1113
Create:
Last Update:

🐍 Хитрая задача на замыкания в Python

🔹 Уровень: Advanced
🔹 Темы: замыкания (closures), переменные цикла, lambda, отложенное выполнение

📌 Условие

Что выведет следующий код?


funcs = []

for i in range(5):
funcs.append(lambda: i)

results = [f() for f in funcs]
print(results)


Вопросы

1. Почему вывод может не соответствовать ожиданиям [0, 1, 2, 3, 4]?
2. Что именно "запоминает" lambda внутри цикла?
3. Как переписать код, чтобы результат был [0, 1, 2, 3, 4]?

🔍 Разбор

Ожидаемый (неправильный) вывод:

[4, 4, 4, 4, 4]


🔧 Почему так происходит

- Все lambda внутри funcs замыкают одну и ту же переменную `i`.
- К моменту выполнения f() переменная i уже равна 4 — и так для всех функций.

⚠️ Подвох

lambda: i не захватывает значение, а ссылается на переменную, которая будет изменяться при каждой итерации цикла.
В итоге — все lambda ссылаются на одно и то же `i`, которое стало равно 4 к концу цикла.

🧠 Решение

Нужно "зафиксировать" значение i, передав его как аргумент по умолчанию в lambda:


for i in range(5):
funcs.append(lambda i=i: i)


Теперь результат будет:

[0, 1, 2, 3, 4]


📌 Это один из самых частых подвохов в Python, особенно при использовании лямбда-функций в генераторах и UI-коллбеках.

BY Python вопросы с собеседований


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/python_job_interview/1113

View MORE
Open in Telegram


Python вопросы с собеседований Telegram | DID YOU KNOW?

Date: |

Mr. Durov launched Telegram in late 2013 with his brother, Nikolai, just months before he was pushed out of VK, the Russian social-media platform he founded. Mr. Durov pitched his new app—funded with the proceeds from the VK sale—less as a business than as a way for people to send messages while avoiding government surveillance and censorship.

Telegram and Signal Havens for Right-Wing Extremists

Since the violent storming of Capitol Hill and subsequent ban of former U.S. President Donald Trump from Facebook and Twitter, the removal of Parler from Amazon’s servers, and the de-platforming of incendiary right-wing content, messaging services Telegram and Signal have seen a deluge of new users. In January alone, Telegram reported 90 million new accounts. Its founder, Pavel Durov, described this as “the largest digital migration in human history.” Signal reportedly doubled its user base to 40 million people and became the most downloaded app in 70 countries. The two services rely on encryption to protect the privacy of user communication, which has made them popular with protesters seeking to conceal their identities against repressive governments in places like Belarus, Hong Kong, and Iran. But the same encryption technology has also made them a favored communication tool for criminals and terrorist groups, including al Qaeda and the Islamic State.

Python вопросы с собеседований from de


Telegram Python вопросы с собеседований
FROM USA